<?php

/**
 * principal actions.
 *
 * @package    sf_rlinux_tlmark
 * @subpackage principal
 * @author     Rodrigo Tadeu Claro
 * @version    SVN: $Id: actions.class.php,v 1.6 2007-10-24 00:25:05 rlinux Exp $
 */

class principalActions extends sfActions
{
  /**
   * Executes index action
   *
   */
  public function executeIndex()
  {

  }

  public function executeLogin()
  {
  	// Busca os parâmetros digitados pelo usuário no form
  	$login = $this->getRequestParameter('login');
  	$senha = $this->getRequestParameter('senha');

  	// Cria um novo critério para ser utilizado na consulta
  	$c = new Criteria();
  	// Neste critério adiciona a condição login = $login.
  	$c->add(UsuariosPeer::LOGIN, $login);
   // Executa a consulta SQL
  	$usuario = UsuariosPeer::doSelectOne($c);
  	// Detecta o ID do funcionario logado   
   $credencial_id = $usuario->getCredencialId();  
   //echo $credencial_id;
                     
   // existe login, a senha digitada é igual a senha da base de dados,
   // o usuario está ATIVO e a abreviação do cargo do usuário logado é DIR(3), SUP(5), PRE(7) ou FIN(9) 
  	if ($usuario
  	    && $usuario->getSenha() == $senha
  	    && $usuario->getAtivo() == 1 
  	    && $credencial_id ==  3  
  	    )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu Completo 
		return $this->redirect('principal/menu/');
  	}
  	
  	elseif ($usuario
  	    && $usuario->getSenha() == $senha
  	    && $usuario->getAtivo() == 1 
  	    && $credencial_id ==  5  
  	    )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu Completo 
		return $this->redirect('principal/menu/');
	}
		
	elseif ($usuario
  	    && $usuario->getSenha() == $senha
  	    && $usuario->getAtivo() == 1 
  	    && $credencial_id ==  7  
  	    )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu Completo 
		return $this->redirect('principal/menu/');
	}

   elseif ($usuario
  	    && $usuario->getSenha() == $senha
  	    && $usuario->getAtivo() == 1 
  	    && $credencial_id ==  9  
  	    )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu Completo 
		return $this->redirect('principal/menu/');
	}  	 
  	    
   // existe login, a senha digitada é igual a senha da base de dados,
   // o usuario está ATIVO e a abreviação do cargo do usuário logado é ADM(6) 
  	elseif ($usuario
  	        && $usuario->getSenha() == $senha
  	        && $usuario->getAtivo() == 1
  	        && $credencial_id == 6
  	        )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu de Administrador do Telemarketing 
		return $this->redirect('principal/menuAdm/');
  	}
  	  	
  	// existe login, a senha digitada é igual a senha da base de dados,
   // o usuario está ATIVO e a abreviação do cargo do usuário logado é COB(2) ou OPE(4) 
  	elseif ($usuario
  	        && $usuario->getSenha() == $senha
  	        && $usuario->getAtivo() == 1
  	        && $credencial_id ==  2 
  	        )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu de Operador de Telemarketing 
		return $this->redirect('principal/menuOper/');
  	}

   elseif ($usuario
  	        && $usuario->getSenha() == $senha
  	        && $usuario->getAtivo() == 1
  	        && $credencial_id ==  4  
  	        )
  	{
                     
  		// usuario autenticado, é colocado na sessão
  		$this->getUser()->setAuthenticated(true);
		// credencial do usuário
      $this->getUser()->addCredential($usuario->getCredencialId());
		// adiciona o ID na seção, na credencial
		$this->getUser()->setAttribute('id', $usuario->getId(), $usuario->getCredencialId());
		// adiciona o login na sessão, na credencial
		$this->getUser()->setAttribute('login', $usuario->getLogin(), $usuario->getCredencialId());
		// redireciona para o menu de Operador de Telemarketing 
		return $this->redirect('principal/menuOper/');
  	}
  	  	else
  	{
  		// adiciona uma mensagem de erro na requisição enviada pelo usuário
  		$this->getRequest()->setError('Login', 'ATENÇÃO: Login e/ou Senha "errados" ou "inexistentes".');
  		// redirecion para o index com a mensagem de erro para o usuário digitar novamente
  		$this->forward('principal', 'index');
  	}    
      
  }
  
  // Executa a ação de mostrar os menus de acordo com a credencial do usuário
  public function executeMenu(){
  // Irá mostrar a página menuSuccess.php (liberado para SUP, PRE e DIR)
  }

  public function executeMenuAdm(){
  // Irá mostrar a página menuAdmSuccess.php (liberado para ADM)
  }

  public function executeMenuOper(){
  // Irá mostrar a página menuOperSuccess.php liberado para (OPE, COB e FIN)
  }

  public function executeLogout(){
  	$this->getUser()->setAuthenticated(false);//remove da sessão
  	$this->getUser()->clearCredentials();//remove as credenciais do usuário
    // redireciona para a homepage, ou seja principal/index
    $this->redirect('principal/index/');
  }

}
